package com.tx.activemq._01_c_p._03_jms_msg;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * jms 测试
 */
public class Head_Producer_JMS {

    private static final String DEFAULT_URL = "tcp://192.168.254.30:61616";
    private static final String QUEUE_NAME = "queue_01";

    public static void main(String[] args) throws JMSException {
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(DEFAULT_URL);
        Connection connection = factory.createConnection();
        //activemq连接默认是关闭的，需要手动开启
        connection.start();

        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Queue queue = session.createQueue(QUEUE_NAME);
        MessageProducer producer = session.createProducer(queue);
        //2.持久化，用producer设置才有效
        producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

        //3. 消息过期时间
       // producer.setTimeToLive(1000); //1s后过期，就是说，消息在1s后就会出队

        //4. 消息优先级
        producer.setPriority(9);

        Queue test = session.createQueue("hhhh");
        for (int i = 0; i < 3; i++) {
            TextMessage textMessage = session.createTextMessage("msg" + i);
            //1. 目的地
            //      如果producer中有目的地，那么消息头中的目的地无效
            textMessage.setJMSDestination(test);

            //2. 持久化
            //      在消息中设置持久化，那么没得效果
            //      测试： 先启动producer_jms程序，再关闭activemq，查看显示页面中是否有消息
//            textMessage.setJMSDeliveryMode(DeliveryMode.NON_PERSISTENT);

            //3. 消息过期时间
           /* if(i==0) {
                textMessage.setJMSExpiration(1);
            }*/
            //4. 消息优先级,默认为4
            /*if(i == 0) {
                textMessage.setJMSPriority(9);
            }*/

            //5. 消息唯一id
//            textMessage.setJMSMessageID(i + "hhh");

            producer.send(textMessage);
        }

        producer.close();
        session.close();
        connection.close();
        System.out.println("****推送数据到mq完毕****");
    }
}